@echo off
REM 清除AI录取分数线的Redis缓存（Windows版）
REM 用于解决缓存Key不包含province和batch导致的数据错误问题

chcp 65001 >nul
echo =========================================
echo 清除 AI 录取分数线缓存
echo =========================================
echo.

REM Redis连接信息（请根据实际情况修改）
set REDIS_HOST=localhost
set REDIS_PORT=6379
set REDIS_PASSWORD=
set REDIS_DB=0

echo Redis连接信息：
echo   Host: %REDIS_HOST%
echo   Port: %REDIS_PORT%
echo   Database: %REDIS_DB%
echo.

REM 构建Redis命令前缀
if "%REDIS_PASSWORD%"=="" (
    set REDIS_CLI=redis-cli -h %REDIS_HOST% -p %REDIS_PORT% -n %REDIS_DB%
) else (
    set REDIS_CLI=redis-cli -h %REDIS_HOST% -p %REDIS_PORT% -a %REDIS_PASSWORD% -n %REDIS_DB%
)

echo 1. 查看当前AI录取分数线缓存数量...
%REDIS_CLI% KEYS "ai:cutoff:scores::*" > temp_keys.txt
for /f %%i in ('type temp_keys.txt ^| find /c /v ""') do set CURRENT_COUNT=%%i
echo    当前缓存数量: %CURRENT_COUNT%
echo.

if %CURRENT_COUNT%==0 (
    echo    没有找到需要清除的缓存
    del temp_keys.txt
    pause
    exit /b 0
)

echo 2. 缓存Key示例（前5个）：
powershell -Command "Get-Content temp_keys.txt | Select-Object -First 5"
echo.

set /p CONFIRM="是否要清除这些缓存？(y/n) "
if /i not "%CONFIRM%"=="y" (
    echo 已取消清除操作
    del temp_keys.txt
    pause
    exit /b 0
)

echo.
echo 3. 正在清除缓存...

REM 逐行读取并删除
setlocal enabledelayedexpansion
set DELETED_COUNT=0
for /f "delims=" %%k in (temp_keys.txt) do (
    %REDIS_CLI% DEL "%%k" >nul 2>&1
    set /a DELETED_COUNT+=1
    if !DELETED_COUNT! GTR 0 (
        set /a PROGRESS=!DELETED_COUNT!*100/%CURRENT_COUNT%
        <nul set /p="   进度: !PROGRESS!%%         "
    )
)
echo.
echo    ✓ 已删除 %DELETED_COUNT% 个缓存
echo.

REM 验证
%REDIS_CLI% KEYS "ai:cutoff:scores::*" > temp_keys2.txt
for /f %%i in ('type temp_keys2.txt ^| find /c /v ""') do set NEW_COUNT=%%i

echo 4. 验证结果：
echo    清除前数量: %CURRENT_COUNT%
echo    清除后数量: %NEW_COUNT%
echo.

if %NEW_COUNT%==0 (
    echo ✓ 缓存清除成功！
) else (
    echo ⚠ 警告：仍有 %NEW_COUNT% 个缓存未清除
)

REM 清理临时文件
del temp_keys.txt
del temp_keys2.txt

echo.
echo =========================================
echo 完成
echo =========================================
echo.
pause

